我們希望每個容器功能性都盡量單純,但是我們的服務卻一點都不單純,所以我們常常需要同時執行多個容器,那要怎麼控制多個容器之間的溝通與資源共享呢?
Compose 就是因為這個需求所存在的,Compose 可以執行和管理多個容器,設定檔則是使用 YAML 格式。透過他你可以使用單一個指令把所有服務啟動或關閉。
下面這個官方的範例,意思是就是這個服務中有兩個容器,一個容器叫 redis 並使用官方最新的 redis 映像檔,另一個容器叫 web 在目前工作目錄下建構一個映像檔當作來源,並且開放 5000 這個對外 port,掛兩個 volume,本機的目前位置掛到容器的 /code
路徑,建立一個名字叫 logvolume01
的 volume 並掛在 web 容器的 /var/log
路徑位置。
docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- '5000:5000'
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
接著我們只要執行
docker-compose up -d
就可以一鍵啟動兩個容器,接著執行
docker-compose down
就可以把兩個都停止。